//
//  BNBaseTableListView.m
//  BNCodeGuide
//
//  Created by Mac on 2021/5/22.
//  Copyright © 2021 kevin007. All rights reserved.
//

#import "BNBaseTableListView.h"

@implementation BNBaseTableListView
- (instancetype)initWithFrame:(CGRect)frame tableViewStyle:(UITableViewStyle)style
{
    self = [super initWithFrame:frame];
    if (self) {
        self.tableViewStyle = style;
    }
    return self;
}

#pragma mark - ----------------SetupUI----------------
- (void)setupUI {
    self.backgroundColor = [UIColor whiteColor];
    if ([self.subviews containsObject:self.tableView]) {
        [self.tableView removeFromSuperview];
        self.tableView = nil;
    }
    
    [self addSubview:self.tableView];
    
    [self addLayouts];
}

#pragma mark - ----------------AddLayouts----------------
- (void)addLayouts {
    [self.tableView mas_remakeConstraints:^(MASConstraintMaker *make) {
        make.edges.mas_offset(0);
    }];
}

#pragma mark - ----------------Public Methods----------------
#pragma mark - ----------------refreshUI----------------
- (void)refreshUI {
    [self.tableView reloadData];
}

#pragma mark - -------------UICollectionViewDataSource----------------
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 0;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
    return [UITableViewCell cellFromClassWithTableView:tableView];
}

#pragma mark - -------------HeaderFooter----------------
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    return nil;
}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
    return nil;
}

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    return CGFLOAT_MIN;
}

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    return CGFLOAT_MIN;
}

#pragma mark - ----------------UICollectionViewDelegate-------------------
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    
    !self.didSelectRowAtIndexPathHandler?:self.didSelectRowAtIndexPathHandler(indexPath);
    
    if ([self.delegate respondsToSelector:@selector(tableListView:didSelectRowAtIndexPath:)]) {
        [self.delegate tableListView:self didSelectRowAtIndexPath:indexPath];
    }
}

#pragma mark - ----------------Getter & Setter----------------
- (UITableView *)tableView {
    if (!_tableView) {
        _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:self.tableViewStyle];
        _tableView.backgroundColor = self.backgroundColor;
        _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
        _tableView.dataSource = self;
        _tableView.delegate = self;
        
        _tableView.estimatedRowHeight = 0;
        _tableView.estimatedSectionFooterHeight = 0;
        _tableView.estimatedSectionHeaderHeight = 0;
        
        _tableView.rowHeight = UITableViewAutomaticDimension;
        
    }
    
    return _tableView;
}

- (void)setTableViewStyle:(UITableViewStyle)tableViewStyle {
    _tableViewStyle = tableViewStyle;
    [self setupUI];
}
@end
